let obj = {
  a: 100,
  b: [10, 20, 30],
  c: {
    x: 10
  },
  d: /^\d+$/
};

let arr = [10, [100, 200], {
  x: 10,
  y: 20
}]

// 以上是期望进行克隆的对象.


// 浅克隆
const newObj = new obj.constructor;
for (let key in obj) {
  if (obj.hasOwnProperty(key)) {
    newObj[key] = obj[key];
  }
}

console.log(newObj);
// 这种浅克隆方案会导致修改 newObj 将影响原来的 obj 对象。
newObj.b[2] = 100;
console.log(newObj);
console.log(obj);
